﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Citas.Dominio;
using NHibernate;
using NHibernate.Criterion;

namespace Citas.Persistencia.NH
{
    public class UsuarioDAO : BaseDAO<Usuario, Int32>, IUsuarioDAO
    {
        public Usuario ObtenerPorCodigo(int codigo)
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                ICriteria busqueda = sesion.CreateCriteria(typeof(Usuario));
                busqueda.Add(Restrictions.Eq("Codigo", codigo));
                return busqueda.UniqueResult<Usuario>();
            }
        }

        public Usuario ObtenerPorUsuario(String usuario)
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                ICriteria busqueda = sesion.CreateCriteria(typeof(Usuario));
                busqueda.Add(Restrictions.Like("NombreUsuario", usuario));
                return busqueda.UniqueResult<Usuario>();
            }
        }

        public ICollection<Usuario> ListarXNombre(String nombre)
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                ICollection<Usuario> resultado = sesion
                                        .CreateCriteria(typeof(Usuario))
                                        .Add(Restrictions.Like("Nombre", nombre + "%"))
                                        .List<Usuario>();
                return resultado;

            }
        }
    }
}